/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aritmeticacomputacional;

/**
 * @author Charles
 * @author João Paulo
 */
public class PontoFixoNSinalizado {

    private StringBuilder significando;
    private boolean overflow;

    public PontoFixoNSinalizado(StringBuilder numero) {
        if(Operacoes.getValue(numero.toString()).length()>16){
            this.overflow = true;
        }
        this.significando = new StringBuilder(numero.substring(numero.length() - 16, numero.length()));
        this.overflow = false;
    }

    public PontoFixoNSinalizado(PontoFixoNSinalizado numero) {
        this.significando = new StringBuilder(numero.getSignificando());
        this.overflow = false;
    }

    public StringBuilder getSignificando() {
        return significando;
    }

    public void setSignificando(StringBuilder significando) {
        this.significando = significando;
    }

    public boolean isOverflow() {
        return overflow;
    }

    public void setOverflow(boolean overflow) {
        this.overflow = overflow;
    }

    public int getDecValue() {
        int resultado = 0;
        for (int i = 15; i >= 0; i--) {
            resultado += Integer.parseInt(this.getSignificando().charAt(i) + "") * Math.pow(2, 15 - i);
        }
        return resultado;
    }
}
